//#include<stdio.h>
//#include<stdlib.h>
//
//struct ListNode {
//   int val;
//   struct ListNode *next;
//};
//
//struct ListNode* middleNode(struct ListNode** head){
//	struct ListNode* slow = *head;
//	struct ListNode* fast = *head;
//
//	while (fast && fast->next)
//	{
//		fast = fast->next->next;
//		slow = slow->next;
//	}
//	*head = slow;
//	return *head;
//}
//
//struct ListNode* CreateListNode(int x)
//{
//	struct ListNode* newnode = (struct ListNode*)malloc(sizeof(struct ListNode));
//	if (newnode == NULL)
//	{
//		printf("malloc fail\n");
//		exit(-1); 
//	}
//	newnode->val = x;
//	newnode->next = NULL;
//	return newnode;
//}
//
//void PushFront(struct ListNode** pphead,int x)
//{
//	struct ListNode* newnode = CreateListNode(x);
//	newnode->next = *pphead;
//	*pphead = newnode;
//}
//
//void PrintListNode(struct ListNode* pphead)
//{
//	struct ListNode* cur = pphead;
//	while (cur)
//	{
//		printf("%d->", cur->val);
//		cur = cur->next;
//	}
//	printf("NULL\n");
//}
//
//int main()
//{
//	struct ListNode* sl = NULL;
//	PushFront(&sl, 4);
//	PushFront(&sl, 3);
//	PushFront(&sl, 2);
//	PushFront(&sl, 1);
//	
//	struct ListNode* newnode = middleNode(&sl);
//	PrintListNode(sl);
//
//	return 0;
//}

/**
* Definition for singly-linked list.
* struct ListNode {
*     int val;
*     struct ListNode *next;
* };
*/

// void LNodePushFront(struct ListNode** pphead,struct ListNode* val)
// {
//     val->next = *pphead;
//     *pphead = val;
// }

//struct ListNode* reverseList(struct ListNode* head){
//	if (head == NULL || head->next == NULL)
//	{
//		return head;
//	}
//	struct ListNode* cur = head;
//	struct ListNode* prev = NULL;
//	while (cur)
//	{
//		struct ListNode* next = cur->next;
//
//	}
//
//	prev = head;
//	return head;
//}

/**
* Definition for singly-linked list.
* struct ListNode {
*     int val;
*     struct ListNode *next;
* };
*/


//struct ListNode* removeElements(struct ListNode* head, int val){
//	if (head == NULL)
//	{
//		return NULL;
//	}
//	struct ListNode* cur = head;
//	struct ListNode* prev = NULL;
//
//	while (cur)
//	{
//		if (cur->val == val)
//		{
//			if (cur == head)
//			{
//				head = cur->next;
//				free(cur);
//				cur = head;
//			}
//			else
//			{
//				prev->next = cur->next;
//				cur = prev->next;
//			}
//		}
//		else
//		{
//			prev = cur;
//			cur = cur->next;
//		}
//	}
//	return head;
//}